import ccxt from '../../js/ccxt.js';

// AUTO-TRANSPILE //

// fetch and handle constinuosly
async function fetchOHLCVContinuously (exchange, symbol) {
    while (true) {
        try {
            const ohlcv = await exchange.fetchOHLCV (symbol);
            const ohlcvLength = ohlcv.length;
            console.log ('Fetched ', exchange.id, ' - ', symbol, ' candles. last candle: ', ohlcv[ohlcvLength - 1]);
        } catch (e) {
            console.log (e);
            break;
        }
    }
}

// start exchanges and fetch OHLCV loop
async function startExchange (exchangeName, symbols) {
    const ex = new ccxt[exchangeName] ({});
    const promises = [];
    for (let i = 0; i < symbols.length; i++) {
        const symbol = symbols[i];
        promises.push (fetchOHLCVContinuously (ex, symbol));
    }
    await Promise.all (promises);
    await ex.close ();
}

// main function
async function example () {
    const exchanges = [ 'binance', 'okx', 'kraken' ];
    const symbols = [ 'BTC/USDT', 'ETH/USDT' ];
    const promises = [];
    for (let i = 0; i < exchanges.length; i++) {
        const exchangeName = exchanges[i];
        promises.push (startExchange (exchangeName, symbols));
    }
    await Promise.all (promises);
}


await example ();
